package thread;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**日期工具类*/
class DataUtil {
    /**此对象是一个线程不安全的对象,不能在线程不安全的环境下共享使用*/
    static  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //同步方法，将字符串转换为日期对象，现在是线程安全了，但是会效率低一些。
    public static synchronized Date parse(String str) {
        //此方法使用的对象锁为(DateUtil.class)
        try {
            return sdf.parse(str);
        }catch (ParseException e){
            e.printStackTrace();
            throw  new RuntimeException("日期转换异常");
        }
    }
}
/**
 * @Author Justin Parker
 * @Date 2024/7/20 0020 14:09
 * @Version 1.0
 */
public class DataUtilDemo {
    public static void main(String[] args) throws ParseException
    {
//        doDateOperation();
        //注意：SimpleDateFormat是线程不安全的，所以不要在多线程环境下使用
        new Thread(()->{
          for (int i = 0; i < 100; i++) {
            Date date = DataUtil.parse("2024-07-20 14:09:00");
              System.out.println(date);
          }
        }).start();

        new Thread(()->{
            for (int i = 0; i < 100; i++) {
                Date date = DataUtil.parse("2024-07-20 14:09:00");
                System.out.println(date);
            }
        }).start();

    }
    public static void doDateOperation() throws ParseException
    {
        //构建一个日期对象
        Date date = new Date();
        System.out.println(date);
        //将日期转换为一个字符串，借助SimpleDateFormat去实现
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = sdf.format(date);
        System.out.println(str);
        //将字符串转换为日期对象
        date = sdf.parse(str);
        System.out.println(date);
    }
}
